home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / gnu / groff108.lha / groff-1.08 / eqn / eqn.cc < prev    next >
C/C++ Source or Header  |  1993-04-13  |  45KB  |  1,163 lines

  1. #ifndef lint
  2. static char yysccsid[] = "@(#)yaccpar    1.8 (Berkeley) 01/20/90";
  3. #endif
  4. #define YYBYACC 1
  5. #line 20 "/u/jjc/groff/eqn/eqn.y"
  6. #include <stdio.h>
  7. #include <string.h>
  8. #include <stdlib.h>
  9.  
  10. #include "lib.h"
  11. #include "box.h"
  12. extern int non_empty_flag;
  13. char *strsave(const char *);
  14. int yylex();
  15. void yyerror(const char *);
  16. #line 32 "/u/jjc/groff/eqn/eqn.y"
  17. typedef union {
  18.     char *str;
  19.     box *b;
  20.     pile_box *pb;
  21.     matrix_box *mb;
  22.     int n;
  23.     column *col;
  24. } YYSTYPE;
  25. #line 26 "y.tab.c"
  26. #define OVER 257
  27. #define SMALLOVER 258
  28. #define SQRT 259
  29. #define SUB 260
  30. #define SUP 261
  31. #define LPILE 262
  32. #define RPILE 263
  33. #define CPILE 264
  34. #define PILE 265
  35. #define LEFT 266
  36. #define RIGHT 267
  37. #define TO 268
  38. #define FROM 269
  39. #define SIZE 270
  40. #define FONT 271
  41. #define ROMAN 272
  42. #define BOLD 273
  43. #define ITALIC 274
  44. #define FAT 275
  45. #define ACCENT 276
  46. #define BAR 277
  47. #define UNDER 278
  48. #define ABOVE 279
  49. #define TEXT 280
  50. #define QUOTED_TEXT 281
  51. #define FWD 282
  52. #define BACK 283
  53. #define DOWN 284
  54. #define UP 285
  55. #define MATRIX 286
  56. #define COL 287
  57. #define LCOL 288
  58. #define RCOL 289
  59. #define CCOL 290
  60. #define MARK 291
  61. #define LINEUP 292
  62. #define TYPE 293
  63. #define VCENTER 294
  64. #define PRIME 295
  65. #define SPLIT 296
  66. #define NOSPLIT 297
  67. #define UACCENT 298
  68. #define SPECIAL 299
  69. #define SPACE 300
  70. #define GFONT 301
  71. #define GSIZE 302
  72. #define DEFINE 303
  73. #define NDEFINE 304
  74. #define TDEFINE 305
  75. #define SDEFINE 306
  76. #define UNDEF 307
  77. #define IFDEF 308
  78. #define INCLUDE 309
  79. #define DELIM 310
  80. #define CHARTYPE 311
  81. #define SET 312
  82. #define GRFONT 313
  83. #define GBFONT 314
  84. #define YYERRCODE 256
  85. short yylhs[] = {                                        -1,
  86.     0,    0,    6,    6,    1,    1,    1,    2,    2,    2,
  87.     2,    2,    3,    3,    3,    3,    4,    4,    7,    7,
  88.     7,    5,    5,    5,    5,    5,    5,    5,    5,    5,
  89.     5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
  90.     5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
  91.     5,    5,    5,    5,    8,   11,   11,   12,   12,   13,
  92.    13,   16,   16,   15,   15,   14,   14,   14,   14,    9,
  93.     9,   10,   10,   10,
  94. };
  95. short yylen[] = {                                         2,
  96.     0,    1,    1,    2,    1,    2,    2,    1,    3,    3,
  97.     5,    5,    1,    2,    3,    3,    1,    3,    1,    3,
  98.     5,    1,    1,    2,    2,    1,    1,    1,    3,    2,
  99.     2,    2,    2,    4,    5,    3,    2,    2,    2,    3,
  100.     3,    2,    2,    2,    2,    3,    3,    3,    3,    3,
  101.     3,    3,    2,    3,    1,    1,    3,    3,    4,    1,
  102.     2,    1,    3,    3,    4,    2,    2,    2,    2,    1,
  103.     1,    1,    1,    1,
  104. };
  105. short yydefred[] = {                                      0,
  106.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  107.     0,    0,   22,   23,    0,    0,    0,    0,    0,    0,
  108.     0,    0,    0,    0,    0,    0,   26,   27,   28,    0,
  109.     0,    3,    5,    0,   13,    0,    0,   17,   14,   70,
  110.    71,    0,    0,   55,   31,   32,   33,   30,   73,   74,
  111.    72,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  112.     0,    0,    0,    6,    7,    0,    0,   24,   25,    0,
  113.     0,    0,    0,    0,    0,    0,    0,    0,   37,   38,
  114.    39,    0,    4,    0,    0,    0,    0,    0,    0,    0,
  115.     0,    0,    0,    0,    0,    0,    0,    0,   60,    0,
  116.     0,   29,   15,   16,    9,    0,    0,   20,   18,   40,
  117.    41,    0,   58,    0,    0,    0,    0,   66,   67,   68,
  118.    69,   34,   61,    0,    0,    0,    0,   59,   35,    0,
  119.     0,    0,   11,   12,   21,    0,   64,    0,    0,   65,
  120. };
  121. short yydgoto[] = {                                      31,
  122.    32,   33,   34,   35,   36,   84,   38,   43,   44,   52,
  123.    85,   45,   98,   99,  118,  131,
  124. };
  125. short yysindex[] = {                                   1488,
  126.  1527, -120, -120, -120, -120, -123, -249, -249, 1566, 1566,
  127.  1566, 1566,    0,    0, -249, -249, -249, -249, -115, 1488,
  128.  1488, -249, 1566, -256, -251, -249,    0,    0,    0, 1488,
  129.     0,    0,    0, -221,    0, -233, 1488,    0,    0,    0,
  130.     0, 1488,  -85,    0,    0,    0,    0,    0,    0,    0,
  131.     0, 1488, 1566, 1566, -195, -195, -195, -195, 1566, 1566,
  132.  1566, 1566, -272,    0,    0, 1566, -195,    0,    0, 1566,
  133.  1402, 1527, 1527, 1527, 1527, 1566, 1566, 1566,    0,    0,
  134.     0, 1566,    0, 1488, -113, 1488, 1444, -195, -195, -195,
  135.  -195, -195, -195, -117, -117, -117, -117, -118,    0, -195,
  136.  -195,    0,    0,    0,    0, -167, -189,    0,    0,    0,
  137.     0, 1488,    0, -106, -123, 1488,  -83,    0,    0,    0,
  138.     0,    0,    0, 1527, 1527, 1566, 1488,    0,    0, 1488,
  139.  -105, 1488,    0,    0,    0, 1488,    0, -104, 1488,    0,
  140. };
  141. short yyrindex[] = {                                     41,
  142.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  143.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  144.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  145.     0,    0,    0,    1,    0, 1220,   46,    0,    0,    0,
  146.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  147.     0,    0,    0,    0,   85,  128,  363,  406,    0,    0,
  148.     0,    0,    0,    0,    0,    0,  449,    0,    0,    0,
  149.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  150.     0,    0,    0, -103,    0,    0,  185,  492,  727,  770,
  151.   813,  856, 1091,    0,    0,    0,    0,    0,    0, 1134,
  152.  1177,    0,    0,    0,    0,   42, 1220,    0,    0,    0,
  153.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  154.     0,    0,    0,    0,    0,    0, -102,    0,    0, -101,
  155.     0,    0,    0,    0,    0,    0,    0,    0,  -99,    0,
  156. };
  157. short yygindex[] = {                                      0,
  158.    -7,  -69,    3,  -66,  458,    9,  -26,   52,   27,  -63,
  159.   -32,   54,    0,  -35,    2,  -59,
  160. };
  161. #define YYTABLESIZE 1865
  162. short yytable[] = {                                      49,
  163.     8,   50,   42,   39,  105,  116,  122,   63,   37,    8,
  164.   109,  113,   64,   65,   94,   95,   96,   97,  128,  137,
  165.   140,   56,   57,   62,   68,   63,   76,   77,   69,   83,
  166.    40,   41,   51,   53,   54,   72,   73,   86,   71,  132,
  167.     1,   10,   78,   79,   80,    2,   74,   75,   66,  108,
  168.    10,  129,   70,  114,  133,  134,   46,   47,   48,  135,
  169.    87,   81,  123,   83,   82,    0,   59,   60,   61,   62,
  170.    76,  126,  138,    0,  103,  104,   83,  106,    0,   83,
  171.    78,   79,   80,    0,   42,    0,   78,   79,   80,   72,
  172.    73,    0,    0,   42,    8,    0,  119,  120,  121,   81,
  173.   124,  125,   82,    0,    0,   81,    0,    0,   82,    0,
  174.     0,    0,    0,    0,    0,    0,    0,    0,    0,   83,
  175.   127,    0,   83,    8,  130,    8,    8,   43,    0,    0,
  176.     0,   83,    0,    0,    0,   10,   43,    0,    0,    0,
  177.   130,   51,    0,    0,  139,  117,  117,  117,  117,    0,
  178.     0,    0,    0,    0,    0,    0,   40,   41,    0,   40,
  179.    41,    0,   40,   41,   10,  112,   10,   10,   94,   95,
  180.    96,   97,  112,  136,  136,   56,   57,   62,   42,   63,
  181.     0,    0,    0,    0,   36,    0,    0,    0,    0,    0,
  182.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  183.     0,    0,    0,    0,    0,    0,    0,   42,    0,   42,
  184.    42,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  185.     0,   43,    0,    0,    0,    0,    0,    0,    0,    0,
  186.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  187.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  188.    43,    0,   43,   43,    0,    0,    0,    0,    0,    8,
  189.     8,    8,    8,    8,    8,    8,    8,    8,    0,    0,
  190.     8,    8,    8,    8,    8,    8,    8,    8,    8,    8,
  191.     8,    8,    8,    8,    8,    8,    8,    0,    0,    0,
  192.     0,    8,    8,    8,    8,    8,    8,    8,    8,    8,
  193.    10,   10,   10,   10,   10,   10,   10,   10,   10,   36,
  194.     0,   10,   10,   10,   10,   10,   10,   10,   10,   10,
  195.    10,   10,   10,   10,   10,   10,   10,   10,    0,    0,
  196.     0,    0,   10,   10,   10,   10,   10,   10,   10,   10,
  197.    10,   42,   42,   42,   42,   42,   42,   42,   42,   42,
  198.    42,   42,   42,   42,   42,   42,   42,   42,   42,   42,
  199.     0,    0,   44,   42,   42,   42,   42,   42,   42,   42,
  200.    42,   44,    0,    0,    0,   42,   42,   42,   42,    0,
  201.    42,   42,    0,   42,   43,   43,   43,   43,   43,   43,
  202.    43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
  203.    43,   43,   43,    0,    0,   45,   43,   43,   43,   43,
  204.    43,   43,   43,   43,   45,    0,    0,    0,   43,   43,
  205.    43,   43,    0,   43,   43,    0,   43,    0,    0,    0,
  206.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  207.     0,   36,   36,    0,   36,   36,    0,    0,   53,    0,
  208.     0,    0,   36,   36,    0,    0,   44,   53,    0,    0,
  209.    36,   36,   36,   36,    0,    0,   55,   56,   57,   58,
  210.     0,    0,    0,    0,    0,    0,    0,    0,    0,   36,
  211.    67,    0,   36,    0,    0,   44,    0,   44,   44,    0,
  212.     0,   47,    0,    0,    0,    0,    0,    0,    0,   45,
  213.    47,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  214.    88,   89,    0,    0,    0,    0,   90,   91,   92,   93,
  215.     0,    0,    0,  100,    0,    0,    0,  101,   45,    0,
  216.    45,   45,    0,  107,    0,  110,    0,    0,    0,  111,
  217.     0,    0,   53,    0,    0,    0,    0,    0,    0,    0,
  218.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  219.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  220.     0,   53,    0,   53,   53,    0,    0,    0,    0,    0,
  221.     0,    0,    0,    0,    0,   47,    0,    0,    0,    0,
  222.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  223.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  224.     0,    0,    0,    0,   47,    0,   47,   47,    0,   44,
  225.    44,   44,   44,   44,   44,   44,   44,   44,   44,   44,
  226.    44,   44,   44,   44,   44,   44,   44,   44,    0,    0,
  227.     0,   44,   44,   44,   44,   44,   44,   44,   44,    0,
  228.     0,    0,    0,   44,   44,   44,   44,    0,   44,   44,
  229.     0,   44,   45,   45,   45,   45,   45,   45,   45,   45,
  230.    45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
  231.    45,    0,    0,    0,   45,   45,   45,   45,   45,   45,
  232.    45,   45,    0,    0,    0,    0,   45,   45,   45,   45,
  233.     0,   45,   45,    0,   45,   53,   53,   53,   53,   53,
  234.    53,   53,   53,   53,   53,   53,   53,   53,   53,   53,
  235.    53,   53,   53,   53,    0,    0,   46,   53,   53,   53,
  236.    53,   53,   53,   53,   53,   46,    0,    0,    0,   53,
  237.    53,   53,   53,    0,   53,   53,    0,   53,   47,   47,
  238.    47,   47,   47,   47,   47,   47,   47,   47,   47,   47,
  239.    47,   47,   47,   47,   47,   47,   47,    0,    0,   48,
  240.    47,   47,   47,   47,   47,   47,   47,   47,   48,    0,
  241.     0,    0,   47,   47,   47,   47,    0,   47,   47,    0,
  242.    47,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  243.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  244.     0,    0,   49,    0,    0,    0,    0,    0,    0,    0,
  245.    46,   49,    0,    0,    0,    0,    0,    0,    0,    0,
  246.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  247.     0,    0,    0,    0,    0,    0,    0,    0,    0,   46,
  248.     0,   46,   46,    0,    0,   51,    0,    0,    0,    0,
  249.     0,    0,    0,   48,   51,    0,    0,    0,    0,    0,
  250.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  251.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  252.     0,    0,   48,    0,   48,   48,    0,    0,    0,    0,
  253.     0,    0,    0,    0,    0,    0,   49,    0,    0,    0,
  254.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  255.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  256.     0,    0,    0,    0,    0,   49,    0,   49,   49,    0,
  257.     0,    0,    0,    0,    0,    0,    0,    0,    0,   51,
  258.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  259.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  260.     0,    0,    0,    0,    0,    0,    0,    0,   51,    0,
  261.    51,   51,    0,   46,   46,   46,   46,   46,   46,   46,
  262.    46,   46,   46,   46,   46,   46,   46,   46,   46,   46,
  263.    46,   46,    0,    0,    0,   46,   46,   46,   46,   46,
  264.    46,   46,   46,    0,    0,    0,    0,   46,   46,   46,
  265.    46,    0,   46,   46,    0,   46,   48,   48,   48,   48,
  266.    48,   48,   48,   48,   48,   48,   48,   48,   48,   48,
  267.    48,   48,   48,   48,   48,    0,    0,    0,   48,   48,
  268.    48,   48,   48,   48,   48,   48,    0,    0,    0,    0,
  269.    48,   48,   48,   48,    0,   48,   48,    0,   48,   49,
  270.    49,   49,   49,   49,   49,   49,   49,   49,   49,   49,
  271.    49,   49,   49,   49,   49,   49,   49,   49,    0,    0,
  272.    50,   49,   49,   49,   49,   49,   49,   49,   49,   50,
  273.     0,    0,    0,   49,   49,   49,   49,    0,   49,   49,
  274.     0,   49,   51,   51,   51,   51,   51,   51,   51,   51,
  275.    51,   51,   51,   51,   51,   51,   51,   51,   51,   51,
  276.    51,    0,    0,   52,   51,   51,   51,   51,   51,   51,
  277.    51,   51,   52,    0,    0,    0,   51,   51,   51,   51,
  278.     0,   51,   51,    0,   51,    0,    0,    0,    0,    0,
  279.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  280.     0,    0,    0,    0,    0,    0,   54,    0,    0,    0,
  281.     0,    0,    0,    0,   50,   54,    0,    0,    0,    0,
  282.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  283.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  284.     0,    0,    0,   50,    0,   50,   50,    0,    0,   19,
  285.     0,    0,    0,    0,    0,    0,    0,   52,   19,    0,
  286.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  287.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  288.     0,    0,    0,    0,    0,    0,   52,    0,   52,   52,
  289.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  290.    54,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  291.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  292.     0,    0,    0,    0,    0,    0,    0,    0,    0,   54,
  293.     0,   54,   54,    0,    0,    0,    0,    0,    0,    0,
  294.     0,    0,    0,   19,    0,    0,    0,    0,    0,    0,
  295.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  296.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  297.     0,    0,   19,    0,   19,   19,    0,   50,   50,   50,
  298.    50,   50,   50,   50,   50,   50,   50,   50,   50,   50,
  299.    50,   50,   50,   50,   50,   50,    0,    0,    0,   50,
  300.    50,   50,   50,   50,   50,   50,   50,    0,    0,    0,
  301.     0,   50,   50,   50,   50,    0,   50,   50,    0,   50,
  302.    52,   52,   52,   52,   52,   52,   52,   52,   52,   52,
  303.    52,   52,   52,   52,   52,   52,   52,   52,   52,    0,
  304.    29,    0,   52,   52,   52,   52,   52,   52,   52,   52,
  305.     0,    0,    0,    0,   52,   52,   52,   52,    0,   52,
  306.    52,    0,   52,   54,   54,   54,   54,   54,   54,   54,
  307.    54,   54,   54,   54,   54,   54,   54,   54,   54,   54,
  308.    54,   54,   29,    0,    0,   54,   54,   54,   54,   54,
  309.    54,   54,   54,    0,    0,    0,    0,   54,   54,   54,
  310.    54,    0,   54,   54,    0,   54,   19,   19,   19,    0,
  311.     0,   19,   19,   19,   19,   19,   19,   19,   19,   19,
  312.    19,   19,   19,   19,   19,   27,   29,    0,   19,   19,
  313.    19,   19,   19,   19,   19,   19,    0,    0,    0,    0,
  314.    19,   19,   19,   19,    0,   19,   19,    0,   19,    0,
  315.     0,    0,    0,    0,   30,    0,  102,   28,    0,    0,
  316.     0,    0,    0,    0,    0,   29,    0,   27,    0,    0,
  317.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  318.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  319.     0,    0,    0,    0,    0,    0,   30,    0,    0,   28,
  320.     0,    0,    0,    0,   29,    0,    0,    0,    0,    0,
  321.     0,   27,    0,    0,    0,    0,    0,    0,    0,    0,
  322.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  323.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  324.    30,    0,    0,   28,    0,    0,    0,    0,    0,    0,
  325.    27,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  326.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  327.     0,    0,    0,    0,    0,    0,    0,    0,    0,   30,
  328.     0,    0,   28,    0,    0,    0,    0,    0,    0,   27,
  329.     1,    0,    0,    2,    3,    4,    5,    6,    0,    0,
  330.     0,    7,    8,    9,   10,   11,   12,    0,    0,    0,
  331.     0,   13,   14,   15,   16,   17,   18,   19,   30,    0,
  332.     0,   28,   20,   21,   22,   23,    0,   24,   25,    0,
  333.    26,    0,    1,    0,    0,    2,    3,    4,    5,    6,
  334.   115,    0,    0,    7,    8,    9,   10,   11,   12,    0,
  335.     0,    0,    0,   13,   14,   15,   16,   17,   18,   19,
  336.     0,    0,    0,    0,   20,   21,   22,   23,    0,   24,
  337.    25,    0,   26,    0,    0,    0,    1,    0,    0,    2,
  338.     3,    4,    5,    6,    0,    0,    0,    7,    8,    9,
  339.    10,   11,   12,    0,    0,    0,    0,   13,   14,   15,
  340.    16,   17,   18,   19,    0,    0,    0,    0,   20,   21,
  341.    22,   23,    0,   24,   25,    1,   26,    0,    2,    3,
  342.     4,    5,    6,    0,    0,    0,    7,    8,    9,   10,
  343.    11,   12,    0,    0,    0,    0,   13,   14,   15,   16,
  344.    17,   18,   19,    0,    0,    0,    0,    0,    0,   22,
  345.    23,    0,   24,   25,    0,   26,    0,    2,    3,    4,
  346.     5,    6,    0,    0,    0,    7,    8,    9,   10,   11,
  347.    12,    0,    0,    0,    0,   13,   14,   15,   16,   17,
  348.    18,   19,    0,    0,    0,    0,    0,    0,   22,   23,
  349.     0,   24,   25,    0,   26,
  350. };
  351. short yycheck[] = {                                     123,
  352.     0,  125,  123,    1,   74,  123,  125,  123,    0,    9,
  353.    77,  125,   20,   21,  287,  288,  289,  290,  125,  125,
  354.   125,  125,  125,  125,  281,  125,  260,  261,  280,   37,
  355.   280,  281,    6,    7,    8,  257,  258,  123,   30,  123,
  356.     0,    0,  276,  277,  278,    0,  268,  269,   22,   76,
  357.     9,  115,   26,   86,  124,  125,    3,    4,    5,  126,
  358.    52,  295,   98,   71,  298,   -1,   15,   16,   17,   18,
  359.   260,  261,  132,   -1,   72,   73,   84,   75,   -1,   87,
  360.   276,  277,  278,   -1,    0,   -1,  276,  277,  278,  257,
  361.   258,   -1,   -1,    9,   94,   -1,   95,   96,   97,  295,
  362.   268,  269,  298,   -1,   -1,  295,   -1,   -1,  298,   -1,
  363.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  127,
  364.   112,   -1,  130,  123,  116,  125,  126,    0,   -1,   -1,
  365.    -1,  139,   -1,   -1,   -1,   94,    9,   -1,   -1,   -1,
  366.   132,  115,   -1,   -1,  136,   94,   95,   96,   97,   -1,
  367.    -1,   -1,   -1,   -1,   -1,   -1,  280,  281,   -1,  280,
  368.   281,   -1,  280,  281,  123,  279,  125,  126,  287,  288,
  369.   289,  290,  279,  279,  279,  279,  279,  279,   94,  279,
  370.    -1,   -1,   -1,   -1,    0,   -1,   -1,   -1,   -1,   -1,
  371.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  372.    -1,   -1,   -1,   -1,   -1,   -1,   -1,  123,   -1,  125,
  373.   126,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  374.    -1,   94,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  375.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  376.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  377.   123,   -1,  125,  126,   -1,   -1,   -1,   -1,   -1,  259,
  378.   260,  261,  262,  263,  264,  265,  266,  267,   -1,   -1,
  379.   270,  271,  272,  273,  274,  275,  276,  277,  278,  279,
  380.   280,  281,  282,  283,  284,  285,  286,   -1,   -1,   -1,
  381.    -1,  291,  292,  293,  294,  295,  296,  297,  298,  299,
  382.   259,  260,  261,  262,  263,  264,  265,  266,  267,  125,
  383.    -1,  270,  271,  272,  273,  274,  275,  276,  277,  278,
  384.   279,  280,  281,  282,  283,  284,  285,  286,   -1,   -1,
  385.    -1,   -1,  291,  292,  293,  294,  295,  296,  297,  298,
  386.   299,  257,  258,  259,  260,  261,  262,  263,  264,  265,
  387.   266,  267,  268,  269,  270,  271,  272,  273,  274,  275,
  388.    -1,   -1,    0,  279,  280,  281,  282,  283,  284,  285,
  389.   286,    9,   -1,   -1,   -1,  291,  292,  293,  294,   -1,
  390.   296,  297,   -1,  299,  257,  258,  259,  260,  261,  262,
  391.   263,  264,  265,  266,  267,  268,  269,  270,  271,  272,
  392.   273,  274,  275,   -1,   -1,    0,  279,  280,  281,  282,
  393.   283,  284,  285,  286,    9,   -1,   -1,   -1,  291,  292,
  394.   293,  294,   -1,  296,  297,   -1,  299,   -1,   -1,   -1,
  395.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  396.    -1,  257,  258,   -1,  260,  261,   -1,   -1,    0,   -1,
  397.    -1,   -1,  268,  269,   -1,   -1,   94,    9,   -1,   -1,
  398.   276,  277,  278,  279,   -1,   -1,    9,   10,   11,   12,
  399.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  295,
  400.    23,   -1,  298,   -1,   -1,  123,   -1,  125,  126,   -1,
  401.    -1,    0,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   94,
  402.     9,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  403.    53,   54,   -1,   -1,   -1,   -1,   59,   60,   61,   62,
  404.    -1,   -1,   -1,   66,   -1,   -1,   -1,   70,  123,   -1,
  405.   125,  126,   -1,   76,   -1,   78,   -1,   -1,   -1,   82,
  406.    -1,   -1,   94,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  407.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  408.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  409.    -1,  123,   -1,  125,  126,   -1,   -1,   -1,   -1,   -1,
  410.    -1,   -1,   -1,   -1,   -1,   94,   -1,   -1,   -1,   -1,
  411.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  412.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  413.    -1,   -1,   -1,   -1,  123,   -1,  125,  126,   -1,  257,
  414.   258,  259,  260,  261,  262,  263,  264,  265,  266,  267,
  415.   268,  269,  270,  271,  272,  273,  274,  275,   -1,   -1,
  416.    -1,  279,  280,  281,  282,  283,  284,  285,  286,   -1,
  417.    -1,   -1,   -1,  291,  292,  293,  294,   -1,  296,  297,
  418.    -1,  299,  257,  258,  259,  260,  261,  262,  263,  264,
  419.   265,  266,  267,  268,  269,  270,  271,  272,  273,  274,
  420.   275,   -1,   -1,   -1,  279,  280,  281,  282,  283,  284,
  421.   285,  286,   -1,   -1,   -1,   -1,  291,  292,  293,  294,
  422.    -1,  296,  297,   -1,  299,  257,  258,  259,  260,  261,
  423.   262,  263,  264,  265,  266,  267,  268,  269,  270,  271,
  424.   272,  273,  274,  275,   -1,   -1,    0,  279,  280,  281,
  425.   282,  283,  284,  285,  286,    9,   -1,   -1,   -1,  291,
  426.   292,  293,  294,   -1,  296,  297,   -1,  299,  257,  258,
  427.   259,  260,  261,  262,  263,  264,  265,  266,  267,  268,
  428.   269,  270,  271,  272,  273,  274,  275,   -1,   -1,    0,
  429.   279,  280,  281,  282,  283,  284,  285,  286,    9,   -1,
  430.    -1,   -1,  291,  292,  293,  294,   -1,  296,  297,   -1,
  431.   299,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  432.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  433.    -1,   -1,    0,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  434.    94,    9,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  435.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  436.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  123,
  437.    -1,  125,  126,   -1,   -1,    0,   -1,   -1,   -1,   -1,
  438.    -1,   -1,   -1,   94,    9,   -1,   -1,   -1,   -1,   -1,
  439.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  440.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  441.    -1,   -1,  123,   -1,  125,  126,   -1,   -1,   -1,   -1,
  442.    -1,   -1,   -1,   -1,   -1,   -1,   94,   -1,   -1,   -1,
  443.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  444.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  445.    -1,   -1,   -1,   -1,   -1,  123,   -1,  125,  126,   -1,
  446.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   94,
  447.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  448.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  449.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  123,   -1,
  450.   125,  126,   -1,  257,  258,  259,  260,  261,  262,  263,
  451.   264,  265,  266,  267,  268,  269,  270,  271,  272,  273,
  452.   274,  275,   -1,   -1,   -1,  279,  280,  281,  282,  283,
  453.   284,  285,  286,   -1,   -1,   -1,   -1,  291,  292,  293,
  454.   294,   -1,  296,  297,   -1,  299,  257,  258,  259,  260,
  455.   261,  262,  263,  264,  265,  266,  267,  268,  269,  270,
  456.   271,  272,  273,  274,  275,   -1,   -1,   -1,  279,  280,
  457.   281,  282,  283,  284,  285,  286,   -1,   -1,   -1,   -1,
  458.   291,  292,  293,  294,   -1,  296,  297,   -1,  299,  257,
  459.   258,  259,  260,  261,  262,  263,  264,  265,  266,  267,
  460.   268,  269,  270,  271,  272,  273,  274,  275,   -1,   -1,
  461.     0,  279,  280,  281,  282,  283,  284,  285,  286,    9,
  462.    -1,   -1,   -1,  291,  292,  293,  294,   -1,  296,  297,
  463.    -1,  299,  257,  258,  259,  260,  261,  262,  263,  264,
  464.   265,  266,  267,  268,  269,  270,  271,  272,  273,  274,
  465.   275,   -1,   -1,    0,  279,  280,  281,  282,  283,  284,
  466.   285,  286,    9,   -1,   -1,   -1,  291,  292,  293,  294,
  467.    -1,  296,  297,   -1,  299,   -1,   -1,   -1,   -1,   -1,
  468.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  469.    -1,   -1,   -1,   -1,   -1,   -1,    0,   -1,   -1,   -1,
  470.    -1,   -1,   -1,   -1,   94,    9,   -1,   -1,   -1,   -1,
  471.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  472.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  473.    -1,   -1,   -1,  123,   -1,  125,  126,   -1,   -1,    0,
  474.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   94,    9,   -1,
  475.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  476.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  477.    -1,   -1,   -1,   -1,   -1,   -1,  123,   -1,  125,  126,
  478.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  479.    94,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  480.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  481.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  123,
  482.    -1,  125,  126,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  483.    -1,   -1,   -1,   94,   -1,   -1,   -1,   -1,   -1,   -1,
  484.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  485.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  486.    -1,   -1,  123,   -1,  125,  126,   -1,  257,  258,  259,
  487.   260,  261,  262,  263,  264,  265,  266,  267,  268,  269,
  488.   270,  271,  272,  273,  274,  275,   -1,   -1,   -1,  279,
  489.   280,  281,  282,  283,  284,  285,  286,   -1,   -1,   -1,
  490.    -1,  291,  292,  293,  294,   -1,  296,  297,   -1,  299,
  491.   257,  258,  259,  260,  261,  262,  263,  264,  265,  266,
  492.   267,  268,  269,  270,  271,  272,  273,  274,  275,   -1,
  493.     9,   -1,  279,  280,  281,  282,  283,  284,  285,  286,
  494.    -1,   -1,   -1,   -1,  291,  292,  293,  294,   -1,  296,
  495.   297,   -1,  299,  257,  258,  259,  260,  261,  262,  263,
  496.   264,  265,  266,  267,  268,  269,  270,  271,  272,  273,
  497.   274,  275,    9,   -1,   -1,  279,  280,  281,  282,  283,
  498.   284,  285,  286,   -1,   -1,   -1,   -1,  291,  292,  293,
  499.   294,   -1,  296,  297,   -1,  299,  257,  258,  259,   -1,
  500.    -1,  262,  263,  264,  265,  266,  267,  268,  269,  270,
  501.   271,  272,  273,  274,  275,   94,    9,   -1,  279,  280,
  502.   281,  282,  283,  284,  285,  286,   -1,   -1,   -1,   -1,
  503.   291,  292,  293,  294,   -1,  296,  297,   -1,  299,   -1,
  504.    -1,   -1,   -1,   -1,  123,   -1,  125,  126,   -1,   -1,
  505.    -1,   -1,   -1,   -1,   -1,    9,   -1,   94,   -1,   -1,
  506.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  507.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  508.    -1,   -1,   -1,   -1,   -1,   -1,  123,   -1,   -1,  126,
  509.    -1,   -1,   -1,   -1,    9,   -1,   -1,   -1,   -1,   -1,
  510.    -1,   94,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  511.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  512.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  513.   123,   -1,   -1,  126,   -1,   -1,   -1,   -1,   -1,   -1,
  514.    94,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  515.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  516.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  123,
  517.    -1,   -1,  126,   -1,   -1,   -1,   -1,   -1,   -1,   94,
  518.   259,   -1,   -1,  262,  263,  264,  265,  266,   -1,   -1,
  519.    -1,  270,  271,  272,  273,  274,  275,   -1,   -1,   -1,
  520.    -1,  280,  281,  282,  283,  284,  285,  286,  123,   -1,
  521.    -1,  126,  291,  292,  293,  294,   -1,  296,  297,   -1,
  522.   299,   -1,  259,   -1,   -1,  262,  263,  264,  265,  266,
  523.   267,   -1,   -1,  270,  271,  272,  273,  274,  275,   -1,
  524.    -1,   -1,   -1,  280,  281,  282,  283,  284,  285,  286,
  525.    -1,   -1,   -1,   -1,  291,  292,  293,  294,   -1,  296,
  526.   297,   -1,  299,   -1,   -1,   -1,  259,   -1,   -1,  262,
  527.   263,  264,  265,  266,   -1,   -1,   -1,  270,  271,  272,
  528.   273,  274,  275,   -1,   -1,   -1,   -1,  280,  281,  282,
  529.   283,  284,  285,  286,   -1,   -1,   -1,   -1,  291,  292,
  530.   293,  294,   -1,  296,  297,  259,  299,   -1,  262,  263,
  531.   264,  265,  266,   -1,   -1,   -1,  270,  271,  272,  273,
  532.   274,  275,   -1,   -1,   -1,   -1,  280,  281,  282,  283,
  533.   284,  285,  286,   -1,   -1,   -1,   -1,   -1,   -1,  293,
  534.   294,   -1,  296,  297,   -1,  299,   -1,  262,  263,  264,
  535.   265,  266,   -1,   -1,   -1,  270,  271,  272,  273,  274,
  536.   275,   -1,   -1,   -1,   -1,  280,  281,  282,  283,  284,
  537.   285,  286,   -1,   -1,   -1,   -1,   -1,   -1,  293,  294,
  538.    -1,  296,  297,   -1,  299,
  539. };
  540. #define YYFINAL 31
  541. #ifndef YYDEBUG
  542. #define YYDEBUG 0
  543. #endif
  544. #define YYMAXTOKEN 314
  545. #if YYDEBUG
  546. char *yyname[] = {
  547. "end-of-file",0,0,0,0,0,0,0,0,"'\\t'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  548. 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  549. 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"'^'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  550. 0,0,0,0,0,0,0,0,0,0,0,0,0,0,"'{'",0,"'}'","'~'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  551. 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  552. 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  553. 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"OVER",
  554. "SMALLOVER","SQRT","SUB","SUP","LPILE","RPILE","CPILE","PILE","LEFT","RIGHT",
  555. "TO","FROM","SIZE","FONT","ROMAN","BOLD","ITALIC","FAT","ACCENT","BAR","UNDER",
  556. "ABOVE","TEXT","QUOTED_TEXT","FWD","BACK","DOWN","UP","MATRIX","COL","LCOL",
  557. "RCOL","CCOL","MARK","LINEUP","TYPE","VCENTER","PRIME","SPLIT","NOSPLIT",
  558. "UACCENT","SPECIAL","SPACE","GFONT","GSIZE","DEFINE","NDEFINE","TDEFINE",
  559. "SDEFINE","UNDEF","IFDEF","INCLUDE","DELIM","CHARTYPE","SET","GRFONT","GBFONT",
  560. };
  561. char *yyrule[] = {
  562. "$accept : top",
  563. "top :",
  564. "top : equation",
  565. "equation : mark",
  566. "equation : equation mark",
  567. "mark : from_to",
  568. "mark : MARK mark",
  569. "mark : LINEUP mark",
  570. "from_to : sqrt_over",
  571. "from_to : sqrt_over TO from_to",
  572. "from_to : sqrt_over FROM sqrt_over",
  573. "from_to : sqrt_over FROM sqrt_over TO from_to",
  574. "from_to : sqrt_over FROM sqrt_over FROM from_to",
  575. "sqrt_over : script",
  576. "sqrt_over : SQRT sqrt_over",
  577. "sqrt_over : sqrt_over OVER sqrt_over",
  578. "sqrt_over : sqrt_over SMALLOVER sqrt_over",
  579. "script : nonsup",
  580. "script : simple SUP script",
  581. "nonsup : simple",
  582. "nonsup : simple SUB nonsup",
  583. "nonsup : simple SUB simple SUP script",
  584. "simple : TEXT",
  585. "simple : QUOTED_TEXT",
  586. "simple : SPLIT QUOTED_TEXT",
  587. "simple : NOSPLIT TEXT",
  588. "simple : '^'",
  589. "simple : '~'",
  590. "simple : '\\t'",
  591. "simple : '{' equation '}'",
  592. "simple : PILE pile_arg",
  593. "simple : LPILE pile_arg",
  594. "simple : RPILE pile_arg",
  595. "simple : CPILE pile_arg",
  596. "simple : MATRIX '{' column_list '}'",
  597. "simple : LEFT delim equation RIGHT delim",
  598. "simple : LEFT delim equation",
  599. "simple : simple BAR",
  600. "simple : simple UNDER",
  601. "simple : simple PRIME",
  602. "simple : simple ACCENT simple",
  603. "simple : simple UACCENT simple",
  604. "simple : ROMAN simple",
  605. "simple : BOLD simple",
  606. "simple : ITALIC simple",
  607. "simple : FAT simple",
  608. "simple : FONT text simple",
  609. "simple : SIZE text simple",
  610. "simple : FWD number simple",
  611. "simple : BACK number simple",
  612. "simple : UP number simple",
  613. "simple : DOWN number simple",
  614. "simple : TYPE text simple",
  615. "simple : VCENTER simple",
  616. "simple : SPECIAL text simple",
  617. "number : text",
  618. "pile_element_list : equation",
  619. "pile_element_list : pile_element_list ABOVE equation",
  620. "pile_arg : '{' pile_element_list '}'",
  621. "pile_arg : number '{' pile_element_list '}'",
  622. "column_list : column",
  623. "column_list : column_list column",
  624. "column_element_list : equation",
  625. "column_element_list : column_element_list ABOVE equation",
  626. "column_arg : '{' column_element_list '}'",
  627. "column_arg : number '{' column_element_list '}'",
  628. "column : COL column_arg",
  629. "column : LCOL column_arg",
  630. "column : RCOL column_arg",
  631. "column : CCOL column_arg",
  632. "text : TEXT",
  633. "text : QUOTED_TEXT",
  634. "delim : text",
  635. "delim : '{'",
  636. "delim : '}'",
  637. };
  638. #endif
  639. #define yyclearin (yychar=(-1))
  640. #define yyerrok (yyerrflag=0)
  641. #ifdef YYSTACKSIZE
  642. #ifndef YYMAXDEPTH
  643. #define YYMAXDEPTH YYSTACKSIZE
  644. #endif
  645. #else
  646. #ifdef YYMAXDEPTH
  647. #define YYSTACKSIZE YYMAXDEPTH
  648. #else
  649. #define YYSTACKSIZE 500
  650. #define YYMAXDEPTH 500
  651. #endif
  652. #endif
  653. int yydebug;
  654. int yynerrs;
  655. int yyerrflag;
  656. int yychar;
  657. short *yyssp;
  658. YYSTYPE *yyvsp;
  659. YYSTYPE yyval;
  660. YYSTYPE yylval;
  661. short yyss[YYSTACKSIZE];
  662. YYSTYPE yyvs[YYSTACKSIZE];
  663. #define yystacksize YYSTACKSIZE
  664. #define YYABORT goto yyabort
  665. #define YYACCEPT goto yyaccept
  666. #define YYERROR goto yyerrlab
  667. int
  668. yyparse()
  669. {
  670.     register int yym, yyn, yystate;
  671. #if YYDEBUG
  672.     register char *yys;
  673.     extern char *getenv();
  674.  
  675.     if (yys = getenv("YYDEBUG"))
  676.     {
  677.         yyn = *yys;
  678.         if (yyn >= '0' && yyn <= '9')
  679.             yydebug = yyn - '0';
  680.     }
  681. #endif
  682.  
  683.     yynerrs = 0;
  684.     yyerrflag = 0;
  685.     yychar = (-1);
  686.  
  687.     yyssp = yyss;
  688.     yyvsp = yyvs;
  689.     *yyssp = yystate = 0;
  690.  
  691. yyloop:
  692.     if (yyn = yydefred[yystate]) goto yyreduce;
  693.     if (yychar < 0)
  694.     {
  695.         if ((yychar = yylex()) < 0) yychar = 0;
  696. #if YYDEBUG
  697.         if (yydebug)
  698.         {
  699.             yys = 0;
  700.             if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
  701.             if (!yys) yys = "illegal-symbol";
  702.             printf("yydebug: state %d, reading %d (%s)\n", yystate,
  703.                     yychar, yys);
  704.         }
  705. #endif
  706.     }
  707.     if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 &&
  708.             yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
  709.     {
  710. #if YYDEBUG
  711.         if (yydebug)
  712.             printf("yydebug: state %d, shifting to state %d\n",
  713.                     yystate, yytable[yyn]);
  714. #endif
  715.         if (yyssp >= yyss + yystacksize - 1)
  716.         {
  717.             goto yyoverflow;
  718.         }
  719.         *++yyssp = yystate = yytable[yyn];
  720.         *++yyvsp = yylval;
  721.         yychar = (-1);
  722.         if (yyerrflag > 0)  --yyerrflag;
  723.         goto yyloop;
  724.     }
  725.     if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 &&
  726.             yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
  727.     {
  728.         yyn = yytable[yyn];
  729.         goto yyreduce;
  730.     }
  731.     if (yyerrflag) goto yyinrecovery;
  732. #ifdef lint
  733.     goto yynewerror;
  734. #endif
  735. yynewerror:
  736.     yyerror("syntax error");
  737. #ifdef lint
  738.     goto yyerrlab;
  739. #endif
  740. yyerrlab:
  741.     ++yynerrs;
  742. yyinrecovery:
  743.     if (yyerrflag < 3)
  744.     {
  745.         yyerrflag = 3;
  746.         for (;;)
  747.         {
  748.             if ((yyn = yysindex[*yyssp]) && (yyn += YYERRCODE) >= 0 &&
  749.                     yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE)
  750.             {
  751. #if YYDEBUG
  752.                 if (yydebug)
  753.                     printf("yydebug: state %d, error recovery shifting\
  754.  to state %d\n", *yyssp, yytable[yyn]);
  755. #endif
  756.                 if (yyssp >= yyss + yystacksize - 1)
  757.                 {
  758.                     goto yyoverflow;
  759.                 }
  760.                 *++yyssp = yystate = yytable[yyn];
  761.                 *++yyvsp = yylval;
  762.                 goto yyloop;
  763.             }
  764.             else
  765.             {
  766. #if YYDEBUG
  767.                 if (yydebug)
  768.                     printf("yydebug: error recovery discarding state %d\n",
  769.                             *yyssp);
  770. #endif
  771.                 if (yyssp <= yyss) goto yyabort;
  772.                 --yyssp;
  773.                 --yyvsp;
  774.             }
  775.         }
  776.     }
  777.     else
  778.     {
  779.         if (yychar == 0) goto yyabort;
  780. #if YYDEBUG
  781.         if (yydebug)
  782.         {
  783.             yys = 0;
  784.             if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
  785.             if (!yys) yys = "illegal-symbol";
  786.             printf("yydebug: state %d, error recovery discards token %d (%s)\n",
  787.                     yystate, yychar, yys);
  788.         }
  789. #endif
  790.         yychar = (-1);
  791.         goto yyloop;
  792.     }
  793. yyreduce:
  794. #if YYDEBUG
  795.     if (yydebug)
  796.         printf("yydebug: state %d, reducing by rule %d (%s)\n",
  797.                 yystate, yyn, yyrule[yyn]);
  798. #endif
  799.     yym = yylen[yyn];
  800.     yyval = yyvsp[1-yym];
  801.     switch (yyn)
  802.     {
  803. case 2:
  804. #line 126 "/u/jjc/groff/eqn/eqn.y"
  805. { yyvsp[0].b->top_level(); non_empty_flag = 1; }
  806. break;
  807. case 3:
  808. #line 131 "/u/jjc/groff/eqn/eqn.y"
  809. { yyval.b = yyvsp[0].b; }
  810. break;
  811. case 4:
  812. #line 133 "/u/jjc/groff/eqn/eqn.y"
  813. {
  814.           list_box *lb = yyvsp[-1].b->to_list_box();
  815.           if (!lb)
  816.             lb = new list_box(yyvsp[-1].b);
  817.           lb->append(yyvsp[0].b);
  818.           yyval.b = lb;
  819.         }
  820. break;
  821. case 5:
  822. #line 144 "/u/jjc/groff/eqn/eqn.y"
  823. { yyval.b = yyvsp[0].b; }
  824. break;
  825. case 6:
  826. #line 146 "/u/jjc/groff/eqn/eqn.y"
  827. { yyval.b = make_mark_box(yyvsp[0].b); }
  828. break;
  829. case 7:
  830. #line 148 "/u/jjc/groff/eqn/eqn.y"
  831. { yyval.b = make_lineup_box(yyvsp[0].b); }
  832. break;
  833. case 8:
  834. #line 153 "/u/jjc/groff/eqn/eqn.y"
  835. { yyval.b = yyvsp[0].b; }
  836. break;
  837. case 9:
  838. #line 155 "/u/jjc/groff/eqn/eqn.y"
  839. { yyval.b = make_limit_box(yyvsp[-2].b, 0, yyvsp[0].b); }
  840. break;
  841. case 10:
  842. #line 157 "/u/jjc/groff/eqn/eqn.y"
  843. { yyval.b = make_limit_box(yyvsp[-2].b, yyvsp[0].b, 0); }
  844. break;
  845. case 11:
  846. #line 159 "/u/jjc/groff/eqn/eqn.y"
  847. { yyval.b = make_limit_box(yyvsp[-4].b, yyvsp[-2].b, yyvsp[0].b); }
  848. break;
  849. case 12:
  850. #line 161 "/u/jjc/groff/eqn/eqn.y"
  851. { yyval.b = make_limit_box(yyvsp[-4].b, make_limit_box(yyvsp[-2].b, yyvsp[0].b, 0), 0); }
  852. break;
  853. case 13:
  854. #line 166 "/u/jjc/groff/eqn/eqn.y"
  855. { yyval.b = yyvsp[0].b; }
  856. break;
  857. case 14:
  858. #line 168 "/u/jjc/groff/eqn/eqn.y"
  859. { yyval.b = make_sqrt_box(yyvsp[0].b); }
  860. break;
  861. case 15:
  862. #line 170 "/u/jjc/groff/eqn/eqn.y"
  863. { yyval.b = make_over_box(yyvsp[-2].b, yyvsp[0].b); }
  864. break;
  865. case 16:
  866. #line 172 "/u/jjc/groff/eqn/eqn.y"
  867. { yyval.b = make_small_over_box(yyvsp[-2].b, yyvsp[0].b); }
  868. break;
  869. case 17:
  870. #line 177 "/u/jjc/groff/eqn/eqn.y"
  871. { yyval.b = yyvsp[0].b; }
  872. break;
  873. case 18:
  874. #line 179 "/u/jjc/groff/eqn/eqn.y"
  875. { yyval.b = make_script_box(yyvsp[-2].b, 0, yyvsp[0].b); }
  876. break;
  877. case 19:
  878. #line 184 "/u/jjc/groff/eqn/eqn.y"
  879. { yyval.b = yyvsp[0].b; }
  880. break;
  881. case 20:
  882. #line 186 "/u/jjc/groff/eqn/eqn.y"
  883. { yyval.b = make_script_box(yyvsp[-2].b, yyvsp[0].b, 0); }
  884. break;
  885. case 21:
  886. #line 188 "/u/jjc/groff/eqn/eqn.y"
  887. { yyval.b = make_script_box(yyvsp[-4].b, yyvsp[-2].b, yyvsp[0].b); }
  888. break;
  889. case 22:
  890. #line 193 "/u/jjc/groff/eqn/eqn.y"
  891. { yyval.b = split_text(yyvsp[0].str); }
  892. break;
  893. case 23:
  894. #line 195 "/u/jjc/groff/eqn/eqn.y"
  895. { yyval.b = new quoted_text_box(yyvsp[0].str); }
  896. break;
  897. case 24:
  898. #line 197 "/u/jjc/groff/eqn/eqn.y"
  899. { yyval.b = split_text(yyvsp[0].str); }
  900. break;
  901. case 25:
  902. #line 199 "/u/jjc/groff/eqn/eqn.y"
  903. { yyval.b = new quoted_text_box(yyvsp[0].str); }
  904. break;
  905. case 26:
  906. #line 201 "/u/jjc/groff/eqn/eqn.y"
  907. { yyval.b = new half_space_box; }
  908. break;
  909. case 27:
  910. #line 203 "/u/jjc/groff/eqn/eqn.y"
  911. { yyval.b = new space_box; }
  912. break;
  913. case 28:
  914. #line 205 "/u/jjc/groff/eqn/eqn.y"
  915. { yyval.b = new tab_box; }
  916. break;
  917. case 29:
  918. #line 207 "/u/jjc/groff/eqn/eqn.y"
  919. { yyval.b = yyvsp[-1].b; }
  920. break;
  921. case 30:
  922. #line 209 "/u/jjc/groff/eqn/eqn.y"
  923. { yyvsp[0].pb->set_alignment(CENTER_ALIGN); yyval.b = yyvsp[0].pb; }
  924. break;
  925. case 31:
  926. #line 211 "/u/jjc/groff/eqn/eqn.y"
  927. { yyvsp[0].pb->set_alignment(LEFT_ALIGN); yyval.b = yyvsp[0].pb; }
  928. break;
  929. case 32:
  930. #line 213 "/u/jjc/groff/eqn/eqn.y"
  931. { yyvsp[0].pb->set_alignment(RIGHT_ALIGN); yyval.b = yyvsp[0].pb; }
  932. break;
  933. case 33:
  934. #line 215 "/u/jjc/groff/eqn/eqn.y"
  935. { yyvsp[0].pb->set_alignment(CENTER_ALIGN); yyval.b = yyvsp[0].pb; }
  936. break;
  937. case 34:
  938. #line 217 "/u/jjc/groff/eqn/eqn.y"
  939. { yyval.b = yyvsp[-1].mb; }
  940. break;
  941. case 35:
  942. #line 219 "/u/jjc/groff/eqn/eqn.y"
  943. { yyval.b = make_delim_box(yyvsp[-3].str, yyvsp[-2].b, yyvsp[0].str); }
  944. break;
  945. case 36:
  946. #line 221 "/u/jjc/groff/eqn/eqn.y"
  947. { yyval.b = make_delim_box(yyvsp[-1].str, yyvsp[0].b, 0); }
  948. break;
  949. case 37:
  950. #line 223 "/u/jjc/groff/eqn/eqn.y"
  951. { yyval.b = make_overline_box(yyvsp[-1].b); }
  952. break;
  953. case 38:
  954. #line 225 "/u/jjc/groff/eqn/eqn.y"
  955. { yyval.b = make_underline_box(yyvsp[-1].b); }
  956. break;
  957. case 39:
  958. #line 227 "/u/jjc/groff/eqn/eqn.y"
  959. { yyval.b = make_prime_box(yyvsp[-1].b); }
  960. break;
  961. case 40:
  962. #line 229 "/u/jjc/groff/eqn/eqn.y"
  963. { yyval.b = make_accent_box(yyvsp[-2].b, yyvsp[0].b); }
  964. break;
  965. case 41:
  966. #line 231 "/u/jjc/groff/eqn/eqn.y"
  967. { yyval.b = make_uaccent_box(yyvsp[-2].b, yyvsp[0].b); }
  968. break;
  969. case 42:
  970. #line 233 "/u/jjc/groff/eqn/eqn.y"
  971. { yyval.b = new font_box(strsave(get_grfont()), yyvsp[0].b); }
  972. break;
  973. case 43:
  974. #line 235 "/u/jjc/groff/eqn/eqn.y"
  975. { yyval.b = new font_box(strsave(get_gbfont()), yyvsp[0].b); }
  976. break;
  977. case 44:
  978. #line 237 "/u/jjc/groff/eqn/eqn.y"
  979. { yyval.b = new font_box(strsave(get_gfont()), yyvsp[0].b); }
  980. break;
  981. case 45:
  982. #line 239 "/u/jjc/groff/eqn/eqn.y"
  983. { yyval.b = new fat_box(yyvsp[0].b); }
  984. break;
  985. case 46:
  986. #line 241 "/u/jjc/groff/eqn/eqn.y"
  987. { yyval.b = new font_box(yyvsp[-1].str, yyvsp[0].b); }
  988. break;
  989. case 47:
  990. #line 243 "/u/jjc/groff/eqn/eqn.y"
  991. { yyval.b = new size_box(yyvsp[-1].str, yyvsp[0].b); }
  992. break;
  993. case 48:
  994. #line 245 "/u/jjc/groff/eqn/eqn.y"
  995. { yyval.b = new hmotion_box(yyvsp[-1].n, yyvsp[0].b); }
  996. break;
  997. case 49:
  998. #line 247 "/u/jjc/groff/eqn/eqn.y"
  999. { yyval.b = new hmotion_box(-yyvsp[-1].n, yyvsp[0].b); }
  1000. break;
  1001. case 50:
  1002. #line 249 "/u/jjc/groff/eqn/eqn.y"
  1003. { yyval.b = new vmotion_box(yyvsp[-1].n, yyvsp[0].b); }
  1004. break;
  1005. case 51:
  1006. #line 251 "/u/jjc/groff/eqn/eqn.y"
  1007. { yyval.b = new vmotion_box(-yyvsp[-1].n, yyvsp[0].b); }
  1008. break;
  1009. case 52:
  1010. #line 253 "/u/jjc/groff/eqn/eqn.y"
  1011. { yyvsp[0].b->set_spacing_type(yyvsp[-1].str); yyval.b = yyvsp[0].b; }
  1012. break;
  1013. case 53:
  1014. #line 255 "/u/jjc/groff/eqn/eqn.y"
  1015. { yyval.b = new vcenter_box(yyvsp[0].b); }
  1016. break;
  1017. case 54:
  1018. #line 257 "/u/jjc/groff/eqn/eqn.y"
  1019. { yyval.b = make_special_box(yyvsp[-1].str, yyvsp[0].b); }
  1020. break;
  1021. case 55:
  1022. #line 262 "/u/jjc/groff/eqn/eqn.y"
  1023. {
  1024.           int n;
  1025.           if (sscanf(yyvsp[0].str, "%d", &n) == 1)
  1026.             yyval.n = n;
  1027.           a_delete yyvsp[0].str;
  1028.         }
  1029. break;
  1030. case 56:
  1031. #line 272 "/u/jjc/groff/eqn/eqn.y"
  1032. { yyval.pb = new pile_box(yyvsp[0].b); }
  1033. break;
  1034. case 57:
  1035. #line 274 "/u/jjc/groff/eqn/eqn.y"
  1036. { yyvsp[-2].pb->append(yyvsp[0].b); yyval.pb = yyvsp[-2].pb; }
  1037. break;
  1038. case 58:
  1039. #line 279 "/u/jjc/groff/eqn/eqn.y"
  1040. { yyval.pb = yyvsp[-1].pb; }
  1041. break;
  1042. case 59:
  1043. #line 281 "/u/jjc/groff/eqn/eqn.y"
  1044. { yyvsp[-1].pb->set_space(yyvsp[-3].n); yyval.pb = yyvsp[-1].pb; }
  1045. break;
  1046. case 60:
  1047. #line 286 "/u/jjc/groff/eqn/eqn.y"
  1048. { yyval.mb = new matrix_box(yyvsp[0].col); }
  1049. break;
  1050. case 61:
  1051. #line 288 "/u/jjc/groff/eqn/eqn.y"
  1052. { yyvsp[-1].mb->append(yyvsp[0].col); yyval.mb = yyvsp[-1].mb; }
  1053. break;
  1054. case 62:
  1055. #line 293 "/u/jjc/groff/eqn/eqn.y"
  1056. { yyval.col = new column(yyvsp[0].b); }
  1057. break;
  1058. case 63:
  1059. #line 295 "/u/jjc/groff/eqn/eqn.y"
  1060. { yyvsp[-2].col->append(yyvsp[0].b); yyval.col = yyvsp[-2].col; }
  1061. break;
  1062. case 64:
  1063. #line 300 "/u/jjc/groff/eqn/eqn.y"
  1064. { yyval.col = yyvsp[-1].col; }
  1065. break;
  1066. case 65:
  1067. #line 302 "/u/jjc/groff/eqn/eqn.y"
  1068. { yyvsp[-1].col->set_space(yyvsp[-3].n); yyval.col = yyvsp[-1].col; }
  1069. break;
  1070. case 66:
  1071. #line 307 "/u/jjc/groff/eqn/eqn.y"
  1072. { yyvsp[0].col->set_alignment(CENTER_ALIGN); yyval.col = yyvsp[0].col; }
  1073. break;
  1074. case 67:
  1075. #line 309 "/u/jjc/groff/eqn/eqn.y"
  1076. { yyvsp[0].col->set_alignment(LEFT_ALIGN); yyval.col = yyvsp[0].col; }
  1077. break;
  1078. case 68:
  1079. #line 311 "/u/jjc/groff/eqn/eqn.y"
  1080. { yyvsp[0].col->set_alignment(RIGHT_ALIGN); yyval.col = yyvsp[0].col; }
  1081. break;
  1082. case 69:
  1083. #line 313 "/u/jjc/groff/eqn/eqn.y"
  1084. { yyvsp[0].col->set_alignment(CENTER_ALIGN); yyval.col = yyvsp[0].col; }
  1085. break;
  1086. case 70:
  1087. #line 317 "/u/jjc/groff/eqn/eqn.y"
  1088. { yyval.str = yyvsp[0].str; }
  1089. break;
  1090. case 71:
  1091. #line 319 "/u/jjc/groff/eqn/eqn.y"
  1092. { yyval.str = yyvsp[0].str; }
  1093. break;
  1094. case 72:
  1095. #line 324 "/u/jjc/groff/eqn/eqn.y"
  1096. { yyval.str = yyvsp[0].str; }
  1097. break;
  1098. case 73:
  1099. #line 326 "/u/jjc/groff/eqn/eqn.y"
  1100. { yyval.str = strsave("{"); }
  1101. break;
  1102. case 74:
  1103. #line 328 "/u/jjc/groff/eqn/eqn.y"
  1104. { yyval.str = strsave("}"); }
  1105. break;
  1106. #line 1107 "y.tab.c"
  1107.     }
  1108.     yyssp -= yym;
  1109.     yystate = *yyssp;
  1110.     yyvsp -= yym;
  1111.     yym = yylhs[yyn];
  1112.     if (yystate == 0 && yym == 0)
  1113.     {
  1114. #if YYDEBUG
  1115.         if (yydebug)
  1116.             printf("yydebug: after reduction, shifting from state 0 to\
  1117.  state %d\n", YYFINAL);
  1118. #endif
  1119.         yystate = YYFINAL;
  1120.         *++yyssp = YYFINAL;
  1121.         *++yyvsp = yyval;
  1122.         if (yychar < 0)
  1123.         {
  1124.             if ((yychar = yylex()) < 0) yychar = 0;
  1125. #if YYDEBUG
  1126.             if (yydebug)
  1127.             {
  1128.                 yys = 0;
  1129.                 if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
  1130.                 if (!yys) yys = "illegal-symbol";
  1131.                 printf("yydebug: state %d, reading %d (%s)\n",
  1132.                         YYFINAL, yychar, yys);
  1133.             }
  1134. #endif
  1135.         }
  1136.         if (yychar == 0) goto yyaccept;
  1137.         goto yyloop;
  1138.     }
  1139.     if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 &&
  1140.             yyn <= YYTABLESIZE && yycheck[yyn] == yystate)
  1141.         yystate = yytable[yyn];
  1142.     else
  1143.         yystate = yydgoto[yym];
  1144. #if YYDEBUG
  1145.     if (yydebug)
  1146.         printf("yydebug: after reduction, shifting from state %d \
  1147. to state %d\n", *yyssp, yystate);
  1148. #endif
  1149.     if (yyssp >= yyss + yystacksize - 1)
  1150.     {
  1151.         goto yyoverflow;
  1152.     }
  1153.     *++yyssp = yystate;
  1154.     *++yyvsp = yyval;
  1155.     goto yyloop;
  1156. yyoverflow:
  1157.     yyerror("yacc stack overflow");
  1158. yyabort:
  1159.     return (1);
  1160. yyaccept:
  1161.     return (0);
  1162. }
  1163.